package com.ovopark.organize.server.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.ovopark.organize.server.model.entity.FranchiseesRegistration;
import com.ovopark.organize.server.model.query.FranchiseesRegistrationQuery;
import com.ovopark.organize.server.model.vo.FranchiseesRegistrationSaveVo;
import com.ovopark.organize.server.model.vo.FranchiseesRegistrationVo;
import com.ovopark.organize.server.model.vo.SimpleStatusVo;
import com.ovopark.organize.server.model.vo.SimpleStringStringVo;

import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * @Description:
 * @Author:zll
 * @Date:
 */
public interface FranchiseesRegistrationService {


    void saveOrUpdateVo(FranchiseesRegistrationSaveVo vo, Integer userId,String remoteIp, String platform);


    FranchiseesRegistration saveOrUpdateBean(FranchiseesRegistration bean);

    IPage<FranchiseesRegistrationVo> getFranchiseesRegistrationByGroupId(FranchiseesRegistrationQuery query);

    FranchiseesRegistrationVo getFranchiseesRegistrationById(Integer registrationId,Boolean isApp,Integer groupId);

    void deletedFranchiseesRegistrationById(Integer registrationId,Integer deleted,Integer userId,String remoteIp, String platform);

    FranchiseesRegistration findFranchiseesRegistrationById(Integer id);

    List<FranchiseesRegistration> getFranchiseesMobilePhone(Integer id, String mobilePhone, Integer groupId);

    List<FranchiseesRegistration> getFranchiseesByFollowUser(Integer groupId, List<Integer> ids);

    void updateFollowUser(Integer curUserId,Integer groupId, List<Integer> ids, Integer userId, Integer followType, Boolean isDistribution,Boolean isCleanDistribution, Date nextFollowTime,Date finalFollowTime, Boolean isCleanFinalFollowUser,
                          String operatorType, String remoteIp, String platform);

    List<SimpleStringStringVo> getSimpleFranchisees(Integer groupId);

    //operatorType 操作类型

    FranchiseesRegistration updateFllowUser(Integer id,String operatorType);


    void cleanFollowUser(List<Integer> ids);



    /**
     * 根据线索id 查询对应的 确址状态
     */
    Map<Integer,SimpleStatusVo> getFranchiseesRegistrationStatus(Integer groupId, List<Integer> ids);

}
